During streaming of video or audio data packets, random congestion may cause packet loss and jitter. Furthermore, the typical high sensitivity of video systems to variations in packet rate transmission also adds to the danger of degradation resulting from data congestion, potential overflow and the resulting packet loss. The data packets that are dropped and lost cause a gap in the video or audio streaming which is highly unacceptable and intolerable. In addition to contending with packet delivery problems, maintaining low latency is a critical constraint for video streaming.
One of the methods used today for packet recovery of lost data packets is the Forward Error Correction (FEC) scheme. The FEC scheme requires adding a fixed percentage of additional packets to a block of data packets such that the loss of one or more data packets in the block, within some predetermined bound, can be recovered by combining the FEC packets with those data packets that had been successfully received in order to reconstruct the missing data packets. The FEC scheme potentially provides a low-latency method for effectively correcting and recovering lost packets especially in situations where the transmission is unidirectional from one source to numerous destinations.
The FEC scheme is defined in Pro-MPEG Code of Practice #3 release 2 July 2004 “Transmission of Professional MPEG-2 Transport Streams over IP Networks”. The encoder (i.e. transmitter) inserts FEC packets into the output stream and the decoder (i.e. receiver) uses those FEC packets to reconstruct missing packets in the data sequence it receives, where each FEC packet protecting a group of packets can help recover a single lost packet.
In the standard, XOR is chosen as the error correcting function for FEC, which is computationally very easy to implement. In this example, a XOR function is applied to a sequence of four data packets in order to yield a fifth packet “R”:ABCD=R
“R” has the ability to recover any one lost packet of the initial four packets it protects, such as recovering packet “A”:RBCD=A.Nevertheless, inserting FEC packets into the stream introduces bandwidth overhead and implies latency, since the FEC can be calculated only after all the packets it protects have been produced. Therefore a very important parameter in configuring the FEC scheme is how many FEC packets are needed for protecting a selected batch of data packets, and how to organize the protection of the FEC packets over the data packets.
Variable packet loss rates and variable bit rates, coupled with the need to minimize latency, present an even greater challenge to the implementation of FEC schemes for protecting the data packets. Therefore, the selected FEC scheme, which augments a media stream with redundant data, should be designed to help restore stream integrity based upon anticipated levels of packet loss. The FEC scheme, which groups data packets into a FEC block, produces FEC packets which are said to cover the data packets in that block, since missing data packets can be restored by combining the remaining data packets and FEC packets in that block. FEC coverage, the number of missing data packets that the FEC scheme can recover within the same block, is limited to the number of FEC packets within that block. Therefore, a method is needed for arranging the FEC data packet blocks in order to achieve a reliable packet recovery method without burdening the system with a massive overhead.
The simple and naïve method for using the FEC scheme suggests protecting every few consecutive packets with a FEC packet. However, packet loss due to burst has a high probability of losing a number of consecutive packets, which in this case, may not be recoverable by the protecting FEC packet.
FIG. 1a illustrates another prior art method for using the FEC scheme. This method suggests protecting each block of packets having a constant gap between them with a FEC packet. In other words, the total batch of data packets may be divided into fixed rows of predefined number, whereas the FEC packets are designed each to protect a column. The payload of the kth FEC packet (out of the L) protects the D packets numbered k+nL (0≦n≦D−1), where the parameters k, L, D are transmitted in the header of each FEC packet (In the standard, L=Offset, D=NA, k=Base). As illustrated in FIG. 1a an example of 100 data packets are divided into 20 rows, and 5 FEC packets are added, where each FEC packet protects 20 data packets assigned in a column (L=5, D=20). Thus, if the highlighted packets (i.e. 9, 22, 48, 75, and 91) are lost in the transmission, the receiver is able to recover them using the five FEC packets. However, this method is capable of recovering only one lost packet in each column. FIG. 1b illustrates such a case where the highlighted packets are lost and there is no way of recovering them using this prior art method, as some of the columns have more than one lost packet.
US 2006/0029065 discloses a FEC encoding system and method optimized for protecting real-time audio-video streams for transmission over packet-switched networks with minimal latency. The disclosed system and method provide a low-latency FEC scheme for both variable and constant bit-rate MPEG-encoded audio and video streams. To maximize bandwidth-efficiency and playable frame rate for recovered media streams, the disclosed method sorts packets by content type and aggregates them into FEC blocks weighted by sensitivity in the recovered stream to packet loss of a particular content type. However, the described method and system is very complicated and requires the knowledge and identification of the data packets contents.
It is an object of the present invention to provide a method for re-organizing and optimizing the FEC scheme.
It is another object of the present invention to provide a reliable packet recovery method using the FEC scheme.
It is still another object of the present invention to provide a method that achieves a simple and reliable packet recovery method without burdening the system with massive bandwidth overhead.
Other objects and advantages of the invention will become apparent as the description proceeds.